<?php
session_start();


// require les bibliothèques utiles
require_once 'config.php';
require_once 'Auth.php';
//Modifié par cedric.marville@heig-vd.ch
require_once 'smarty/libs/Smarty.class.php';


// A enlever un fois qu'on a les données 
require_once'classes/Plainte.php';
require_once'classes/Contrat.php';
require_once'classes/Versement.php';
require_once "../includes/SC/SCtypederace.php";
require_once "../includes/SC/SCrace.php";

Class orchestrateur{
    
     /**
     * Objet PEAR Auth
     * @var Auth
     */
    protected $auth;
    protected $SFcompte;
    
    /**
     * Objet Smarty
     * @var Smarty 
     */
    protected $smarty;
    
    public function __construct(){
        // Auth instance
        $params = array(
            "dsn" => AUTH_DB_DSN,
            "table" => "compte",
            "usernamecol" => "username",
            "passwordcol" => "password"
        );

        $this->auth = new Auth("MDB2", $params, '', false);
        $this->auth->start();
        
        // Smarty instance
        $tplDir = ACA_ROOTPATH . ACA_TPL_DIR;
        $tplcDir = ACA_ROOTPATH . ACA_TPLC_DIR;
        $config_dir = ACA_ROOTPATH . ACA_CONFIG_DIR;
        $this->smarty = new Smarty;
        $this->smarty->template_dir = $tplDir;
        $this->smarty->compile_dir = $tplcDir;
        $this->smarty->config_dir = $config_dir;
        
        $this->SFcompte = new SFcompte();
    }
    
    
    /**
     * Point d'entrée principal
     * Effectue l'action correspondante à l'action recue en POST ou GET
     */
    public function main() {

        // Procède au logout de l'utilisateur
        if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'logout' /*&& $this->auth->getAuth()*/) {
            $this->logout();
            $this->setUserMessage('Merci pour votre visite!');
        }

        //$this->smarty->assign('userIsLogged', $this->auth->getAuth());
        //$isAdmin = $this->userManager->getIsAdmin($this->auth->getUsername());
        //$this->smarty->assign('userGroupes', $userGroupes);

        $messageErreurAcces = "Cette page n'est pas accessible. Accès refusé.";
        
        $this->action();
    }

    protected function setUserMessage($message) {
        $this->smarty->assign('messageUtilisateur', $message);
    }
    
    // switch qui permet de charger le les informations demandée
    public function action() {
            if(!isset($_REQUEST['action'])){
                $_REQUEST['action']=NULL;
            }
            if(isset($_REQUEST['action']) && ($_REQUEST['action'] == 'logout') && $this->auth->getAuth()){
                $this->logout();
            }
            switch($_REQUEST['action']) {
                case 'authentification';
                    $this->authentification();
                break;
//---------------- Actions Compte-----------------------------------------------
                case 'afficherAccueilCompte': 
                        $this->afficherAccueilCompte();
                break;
                case 'afficherAjouterCompte': 
                        $this->afficherAjouterCompte();
                break;
                case 'ajouterCompte': 
                        $this->ajouterCompte();
                break;
                case 'afficherModifierCompte': 
                        $this->afficherModifierCompte();
                break;
                case 'modifierCompte': 
                        $this->modifierCompte();
                break;
                case 'afficherRechercherCompte': 
                        $this->afficherRechercherCompte();
                break;
                case 'rechercherCompte': 
                        $this->rechercherCompte();
                break;
//---------------- Actions Personne-----------------------------------------------
                case 'afficherAccueilPersonne': 
                        $this->afficherAccueilPersonne();
                break;
                case 'accueilPersonne': 
                        $this->accueilPersonne();
                break;
                case 'afficherAjouterPersonne': 
                        $this->afficherAjouterPersonne();
                break;
                case 'ajouterPersonne': 
                        $this->ajouterPersonne();
                break;
                case 'afficherModifierPersonne': 
                        $this->afficherModifierPersonne();
                break;
                case 'modifierPersonne': 
                        $this->modifierPersonne();
                break;
                case 'afficherPersonne': 
                        $this->afficherPersonne();
                break;
                case 'afficherRechercherPersonne': 
                        $this->afficherRechercherPersonne();
                break;
                case 'rechercherPersonne': 
                        $this->rechercherPersonne();
                break;
                case 'afficherSupprimerPersonne':
                        $this->afficherSupprimerPersonne();
                break;
                case 'supprimerPersonne':
                        $this->supprimerPersonne();
                break;
//---------------- Actions Animal-----------------------------------------------
                case 'afficherAccueilAnimal': 
                        $this->afficherAccueilAnimal();
                break;
                case 'ajouterDeplacement': 
                        $this->ajouterDeplacement();
                break;
                case 'supprimerDeplacement':
                        $this->supprimerDeplacement();
                break;
                case 'ajouterMedia': 
                        $this->ajouterMedia();
                break;
                case 'supprimerMedia':
                        $this->supprimerMedia();
                break;
                case 'ajouterRemarque': 
                        $this->ajouterRemarque();
                break;
                case 'supprimerRemarque':
                        $this->supprimerRemarque();
                break;
                case 'ajouterHistorique': 
                        $this->ajouterHistorique();
                break;
                case 'supprimerHistorique':
                        $this->supprimerHistorique();
                break;
                case 'accueilAnimal': 
                        $this->accueilAnimal();
                break;
                case 'afficherAjouterAnimal': 
                        $this->afficherAjouterAnimal();
                break;
                case 'ajouterAnimal': 
                        $this->ajouterAnimal();
                break;
                case 'afficherModifierAnimal': 
                        $this->afficherModifierAnimal();
                break;
                case 'modifierAnimal': 
                        $this->modifierAnimal();
                break;
                case 'afficherAnimal': 
                        $this->afficherAnimal();
                break;
                case 'afficherRechercherAnimal': 
                        $this->afficherRechercherAnimal();
                break;
                case 'rechercherAnimal': 
                        $this->rechercherAnimal();
                break;
//---------------- Actions Plainte -----------------------------------------------
                case 'afficherAccueilPlainte': 
                        $this->afficherAccueilPlainte();
                break;
                  case 'accueilPlainte': 
                        $this->accueilPlainte();
                break;
                case 'afficherAjouterPlainte': 
                        $this->afficherAjouterPlainte();
                break;
                case 'ajouterPlainte': 
                        $this->ajouterPlainte();
                break;
                case 'afficherModifierPlainte': 
                        $this->afficherModifierPlainte();
                break;
                case 'modifierPlainte': 
                        $this->modifierPlainte();
                break;
                case 'afficherPlainte': 
                        $this->afficherPlainte();
                break;
                case 'afficherRechercherPlainte': 
                        $this->afficherRechercherPlainte();
                break;
                case 'rechercherPlainte': 
                        $this->rechercherPlainte();
                break;
//---------------- Actions Contrat -----------------------------------------------
                case 'afficherAccueilContrat': 
                        $this->afficherAccueilContrat();
                break;
                case 'accueilContrat': 
                        $this->accueilContrat();
                break;
                case 'ajouterContratPension': 
                        $this->ajouterContratPension();
                break;
                case 'ajouterContratAdoption': 
                        $this->ajouterContratAdoption();
                break;
                case 'ajouterContratCession': 
                        $this->ajouterContratCession();
                break;
                case 'ajouterContratPlacement': 
                        $this->ajouterContratPlacement();
                break;
                case 'ajouterContratRestitution': 
                        $this->ajouterContratRestitution();
                break;
                case 'afficherModifierContrat': 
                        $this->afficherModifierContrat();
                break;
                case 'modifierContrat': 
                        $this->modifierContrat();
                break;
                case 'afficherContrat': 
                        $this->afficherContrat();
                break;
                case 'afficherRechercherContrat': 
                        $this->afficherRechercherContrat();
                break;
                case 'rechercherContrat': 
                        $this->rechercherContrat();
                break;
                case 'afficherAjouterContrat': 
                        $this->afficherAjouterContrat();
                break;
//---------------- Actions Mailing -----------------------------------------------
                case 'afficherAccueilMailing': 
                        $this->afficherAccueilMailing();
                break;
                case 'sendMailing':
                    $this->exporterMailing();
                break;
//---------------- Actions Versement -----------------------------------------------
                case 'afficherAccueilVersement': 
                        $this->afficherAccueilVersement();
                break;
                case 'accueilVersement': 
                        $this->accueilVersement();
                break;
                case 'afficherAjouterVersement': 
                        $this->afficherAjouterVersement();
                break;
                case 'ajouterVersement': 
                        $this->ajouterVersement();
                break;
                case 'afficherModifierVersement': 
                        $this->afficherModifierVersement();
                break;
                case 'modifierVersement': 
                        $this->modifierVersement();
                break;
                case 'afficherVersement': 
                        $this->afficherVersement();
                break;
                case 'afficherRechercherVersement': 
                        $this->afficherRechercherVersement();
                break;
                case 'rechercherVersement': 
                        $this->rechercherVersement();
                break;
//---------------- Actions Langue -----------------------------------------------
                case 'changerLangue': 
                        $this->changerLangue();
                break;
            /***************************************************************************************************************
            
            Défaut

            ***************************************************************************************************************/
                default:
                    $this->afficherAccueil();
                break;
            }
        //}
    }
    
/***************************************************************************************************************
            
Fonctions d'affichage

***************************************************************************************************************/
    
       private function changerLangue(){
           $_SESSION['langue'] = $_GET['langue'];
           if ($_SESSION['langue'] == 'fr') {
               $breadcrumbs = array('<p>Accueil</p>');
               $this->smarty->assign('titrePage', 'Animal Care Application');
            } else { 
                $breadcrumbs = array('<p>Startseite</p>');
                $this->smarty->assign('titrePage', 'Animal Care Application');
                }
           $this->getUser();     
           $this->smarty->assign('breadcrumbs',$breadcrumbs);     
           $this->smarty->assign('page', 'accueil.tpl'); 
           
           $this->smarty->assign('langue', $_SESSION['langue']);
           $this->smarty->display('index.tpl');   
       }
       
       private function getLangue(){
       if(!isset($_SESSION['langue']))$_SESSION['langue'] = 'fr';
           return $this->smarty->assign('langue', $_SESSION['langue']);
       }
       
       private function getUser(){
           $getUser = $this->auth->getUsername();
           return $this->smarty->assign('user', $getUser);
       }
       
        private function afficherAccueil() {
        if ($this->auth->checkAuth()) {
            $this->smarty->assign('page', 'accueil.tpl');
            $this->getLangue();
            $this->getUser();
            if ($_SESSION['langue'] == 'fr') {
                $breadcrumbs = array('<p>Accueil</p>');
                $this->smarty->assign('titrePage', 'Animal Care Application');
            } else { 
                $breadcrumbs = array('<p>Startseite</p>');
                $this->smarty->assign('titrePage', 'Animal Care Application');
            }
            $this->smarty->assign('breadcrumbs', $breadcrumbs);
            $this->smarty->display('index.tpl');
        } else {
            $this->smarty->assign('langue', 'fr');
            $this->smarty->display('connexion.tpl');
        }
        }
        
        // Affichage de la page d'accueil de la gestion des personnes.
        private function afficherAccueilPersonne(){
            if($this->auth->checkAuth() && $this->SFcompte->verifierPermission($this->auth->getUsername(), 'Personnes Lecture')){
                $SAcompte = new SAcompte();
                $groupe = $SAcompte->listerCompteToGroupe(new CompteToGroupe($this->auth->getUsername(), NULL));
                $SApersonne = new SApersonne();
                $listePersonnes = $SApersonne->lister(new Personne(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL));
                $this->smarty->assign('listePersonnes', $listePersonnes);
                $this->smarty->assign('groupe', $groupe[0]->getGroupe_nom());
           if ($_SESSION['langue'] == 'fr') {
               $breadcrumbs = array('<a href="index.php">Accueil </a>','<p> › Personnes</p>');
               $this->smarty->assign('titrePage', 'ACA - Personnes');
            } else { 
                $breadcrumbs = array('<a href="index.php">Startseite </a>','<p> › Personen</p>');
                $this->smarty->assign('titrePage', 'ACA - Personen');
                }
            $this->smarty->assign('breadcrumbs',$breadcrumbs); 
            $this->smarty->assign('page', 'personne.tpl'); 
            $this->getLangue();             
            $this->getUser();
            $this->smarty->display('index.tpl');
            }else{
                $this->afficherAccueil();
            }
        }
        
        // Affichage du formulaire pour ajouter une nouvelle personne.
        private function afficherAjouterPersonne(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Personnes Ecriture'))){
            $SApays = new SApays();
            $listePays = $SApays->lister(new Pays(NULL));
            $this->smarty->assign('listePays', $listePays);
            if ($_SESSION['langue'] == 'fr') {
               $breadcrumbs = array('<a href="index.php">Accueil </a>',
                   '<a href="index.php?action=afficherAccueilPersonne"> › Personnes </a>',
                   '<p> › Nouvelle personne</p>');
               $this->smarty->assign('titrePage', 'Ajouter une personne');
               $this->smarty->assign('titrePage', 'ACA - Nouvelle personne');
            } else { 
                $breadcrumbs = array('<a href="index.php">Startseite </a>',
                    '<a href="index.php?action=afficherAccueilPersonne"> › Personen </a>',
                    '<p> › Neue Person</p>');
                $this->smarty->assign('titrePage', 'Neue Person');
                $this->smarty->assign('titrePage', 'ACA - Neue Person');
                }
            $SCrole = new SCrole();
            $listeRoles = $SCrole->lister(new Role(null));
            $this->smarty->assign('listeRoles', $listeRoles); 
            $this->smarty->assign('breadcrumbs',$breadcrumbs); 
            $this->smarty->assign('page', 'personneAjouter.tpl'); 
            $this->getLangue();             
            $this->getUser();
            $this->smarty->display('index.tpl'); 
            }else{
                $this->afficherAccueil();
            }
        }
        
        // Affichage du formulaire pour modifier une personne.
        private function afficherModifierPersonne(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Personnes Ecriture'))){
            $SApersonne = new SApersonne();
            $SApays = new SApays();
            $listePays = $SApays->lister(new Pays(NULL));
            $personne = $SApersonne->lister(new Personne($_GET['id'], '', '', '', '', '', '', '', '', ''));
            $this->smarty->assign('listePays', $listePays);
            $this->smarty->assign('personne', $personne[0]);
              
                 // if-else pour le breadcrumb
           if ($_SESSION['langue'] == 'fr') {
               $breadcrumbs = array('<a href="index.php">Accueil </a>',
                   '<a href="index.php?action=afficherAccueilPersonne"> › Personnes </a>',
                   '<a href="index.php?action=afficherRechercherPersonne"> › Rechercher une personne </a>',
                   '<p> › Modifier personne </p>');
               $this->smarty->assign('titrePage', 'ACA - Modifier personne');
            } else { 
                $breadcrumbs = array('<a href="index.php">Startseite </a>',
                    '<a href="index.php?action=afficherAccueilPersonne"> › Personen </a>',
                    '<a href="index.php?action=afficherRechercherPersonne"> › Person suchen </a>',
                    '<p> › Person ändern</p>');
                $this->smarty->assign('titrePage', 'ACA - Person ändern');
                }
            $this->smarty->assign('breadcrumbs',$breadcrumbs); 
            $this->smarty->assign('page', 'personneAjouter.tpl'); 
            $this->getLangue();             
            $this->getUser();
            $this->smarty->display('index.tpl');   
            }
        }
        
        // Affichage des résultats d'une recherche de personnes.
        private function afficherRechercherPersonne(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Personnes Lecture'))){
              // if-else pour le breadcrumb
           if ($_SESSION['langue'] == 'fr') {
               $breadcrumbs = array('<a href="index.php">Accueil </a>',
                   '<a href="index.php?action=afficherAccueilPersonne"> › Personnes </a>',
                   '<p> › Rechercher une personne </p>');
               $this->smarty->assign('titrePage', 'ACA - Rechercher une personne');
           } else { 
               $breadcrumbs = array('<a href="index.php">Startseite </a>',
                   '<a href="index.php?action=afficherAccueilPersonne"> › Personen </a>',
                   '<p> › Person suchen</p>');
               $this->smarty->assign('titrePage', 'ACA - Person suchen');
                }
            $SCrole = new SCrole();
            $listeRoles = $SCrole->lister(new Role(null));
            $this->smarty->assign('listeRoles', $listeRoles);
            $this->smarty->assign('breadcrumbs',$breadcrumbs); 
            $this->smarty->assign('page', 'personneRechercher.tpl');
            $this->getLangue();             
            $this->getUser();
            $this->smarty->display('index.tpl');   
            }else{
                $this->afficherAccueil();
            }
        }
        
        // Demande une confirmation avant de supprimer une personne.
        private function afficherSupprimerPersonne(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Personnes Ecriture'))){
            $SApersonne = new SApersonne();
            $personne = $SApersonne->lister(new Personne($_GET['id'], '', '', '', '', '', '', '', '', ''));
            $this->smarty->assign('personne', $personne[0]);
            $this->smarty->assign('page', 'personneSupprimer.tpl'); 
            $this->getLangue();             
            $this->getUser();
            $this->smarty->display('index.tpl'); 
            }else{
                $this->afficherAccueil();
            }
        }
// Fonctions Animal
  
        // Affichage de la page d'accueil de la gestion des animaux
        private function afficherAccueilAnimal(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Animaux Lecture'))){
            $SAcompte = new SAcompte();
            $groupe = $SAcompte->listerCompteToGroupe(new CompteToGroupe($this->auth->getUsername(), NULL));                
            $SAanimal = new SAanimal();
            $listeAnimal = $SAanimal->listerAvecRace(new Animal(NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL), new Race(NULL, NULL  ));
            $this->smarty->assign('groupe', $groupe[0]->getGroupe_nom());
            $this->smarty->assign('listeAnimaux', $listeAnimal);
            // if-else pour le breadcrumb
           if ($_SESSION['langue'] == 'fr') {
                $breadcrumbs = array('<a href="index.php">Accueil </a>',
                    '<p> › Animaux</p>');
                $this->smarty->assign('titrePage', 'ACA - Animaux');
           } else { 
               $breadcrumbs = array('<a href="index.php">Startseite </a>',
                   '<p> › Tiere</p>');
               $this->smarty->assign('titrePage', 'ACA - Tiere');
                }
                $this->smarty->assign('breadcrumbs',$breadcrumbs); 
                $this->smarty->assign('page', 'animal.tpl'); 
            $this->getLangue();             
            $this->getUser();
            $this->smarty->display('index.tpl'); 
            }else{
                $this->afficherAccueil();
            }
        }
        
        // Affichage du formulaire pour ajouter un nouvel animal.
        private function afficherAjouterAnimal(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Animaux Ecriture'))){
                $SCt = new SCtypederace();
                $listeTypes = $SCt->lister(null);
                $this->smarty->assign('typeAnimal', $listeTypes);
                $q = null;
                if(isset($_GET["q"])){
                    $q = $_GET["q"];

                }
                $SCrace = new SCrace();
                $listeRaces = $SCrace->lister(new Race(null, $q));
                $this->smarty->assign('typeRace', $listeRaces);
                $this->smarty->assign('listeCouleur', Animal::$enumCOULEUR);
                $this->smarty->assign('couleurSelected', Animal::$enumCOULEUR['0']);
               // if-else pour le breadcrumb
               if ($_SESSION['langue'] == 'fr') {
                   $breadcrumbs = array('<a href="index.php">Accueil </a>',
                       '<a href="index.php?action=afficherAccueilAnimal"> › Animaux </a>',
                       '<p> › Nouvel animal </p>');
                   $this->smarty->assign('titrePage', 'ACA - Nouvel animal');
               } else { 
                   $breadcrumbs = array('<a href="index.php">Startseite </a>',
                       '<a href="index.php?action=afficherAccueilAnimal"> › Tiere </a>',
                       '<p> › Neues Tier </p>');
                   $this->smarty->assign('titrePage', 'ACA - Neues Tier');
                    }

                $this->smarty->assign('breadcrumbs',$breadcrumbs); 

                $this->smarty->assign('page', 'animalAjouter.tpl'); 
                $this->getLangue();             
                $this->getUser();
                $this->smarty->display('index.tpl'); 
            }else{
                $this->afficherAccueil();
            }
        }
       
        // Affichage du formulaire pour modifier un animal.
        private function afficherModifierAnimal(){    
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Animaux Ecriture'))){
                $SAanimal = new SAanimal();
                $animal = $SAanimal->lister(new Animal($GET['id'],null,null,null,null,null,null,null,null,null,null,null,null,null,null));
                $this->smarty->assign('animal',$animal[0]);
                $this->smarty->assign('listeCouleur', Animal::$enumCOULEUR);
                $this->smarty->assign('couleurSelected', $animal->getCouleur());
                $this->smarty->assign('page', 'animalAjouter.tpl');
                $this->getLangue();             
                $this->getUser();
                $this->smarty->display('index.tpl'); 
            }else{
                $this->afficherAccueil();
            }
        }
        
        
        // Affichage des résultats d'une recherche d'animal
        private function afficherRechercherAnimal(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Animaux Lecture'))){
                $SCt = new SCtypederace();
                $listeTypes = $SCt->lister(null);
                              // if-else pour le breadcrumb
               if ($_SESSION['langue'] == 'fr') {
                    $breadcrumbs = array('<a href="index.php">Accueil </a>',
                        '<a href="index.php?action=afficherAccueilAnimal"> › Animaux </a>',
                        '<p> › Rechercher un animal </p>');
                    $this->smarty->assign('titrePage', 'ACA - Rechercher un animal');
               } else { 
                   $breadcrumbs = array('<a href="index.php">Startseite </a>',
                       '<a href="index.php?action=afficherAccueilAnimal"> › Tiere </a>',
                       '<p> › Tier suchen</p>');
                   $this->smarty->assign('titrePage', 'ACA - Tier suchen');
                    }
                    $this->smarty->assign('breadcrumbs',$breadcrumbs);
                $this->smarty->assign('typeAnimal', $listeTypes);
                $q = null;
                if(isset($_GET["q"])){
                    $q = $_GET["q"];

                }
                $SCrace = new SCrace();
                $listeRaces = $SCrace->lister(new Race(null, $q));
                $this->smarty->assign('typeRace', $listeRaces);
                $this->smarty->assign('listeCouleur', Animal::$enumCOULEUR);
                $this->smarty->assign('page', 'animalRechercher.tpl');
                $this->getLangue();             
                $this->getUser();
                $this->smarty->display('index.tpl'); 
            }else{
                $this->afficherAccueil();
            }
        }
        
        private function ajouterDeplacement(){
            if(true){
                $_POST = $this->videToNull($_POST);
                $SAdeplacement = new SAdeplacement();
                $dateDeplacement = DateConverter::DateIHMToBD($_POST['dateDeplacement']);
                $deplacement = new Deplacement(null, $dateDeplacement, $_POST['animalId'], $_POST['logeDeplacement'], $_POST['batimentDeplacement']);
                $SAdeplacement->ajouter($deplacement);
                
                $_GET['id'] = $_POST['animalId'];
                $this->afficherAnimal();
            }
        }
        
        private function supprimerDeplacement(){
            if(true){
                if(isset($_GET['idDeplacement'])){
                    $SAdeplacement = new SAdeplacement();
                    $SAdeplacement->supprimer($_GET['idDeplacement']);
                }   
                if(isset($_GET['idAnimal'])){
                    $_GET['id'] = $_GET['idAnimal'];
                    $this->afficherAnimal();
                }
            }
        }
        
        private function ajouterMedia(){
            if(true){
                $_POST = $this->videToNull($_POST);
                $SAmedia = new SAmedia();
                $SFmedia = new SFmedia();
                if(isset($_FILES['photoProfil']))
                    $fichier = $SFmedia->uploadMedia($_POST);
                
                $media = new Media($fichier, date('Y-m-d', time()), null, null, null, $_POST['animalId']);
                $SAmedia->ajouterMediaAnimal($media);
                
                $_GET['id'] = $_POST['animalId'];
                $this->afficherAnimal();
            }
        }
        
        private function supprimerMedia(){
            if(true){
                if(isset($_GET['url'])){
                    $SAmedia = new SAmedia();
                    $SAmedia->supprimer($_GET['url']);
                }   
                if(isset($_GET['idAnimal'])){
                    $_GET['id'] = $_GET['idAnimal'];
                    $this->afficherAnimal();
                }
            }
        }
        
        private function ajouterRemarque(){
            if(true){
                $_POST = $this->videToNull($_POST);
                $SAremarque = new SAremarque();
                $dateRemarque = DateConverter::DateIHMToBD($_POST['dateRemarque']);
                
                $remarque = new Remarque(null, $_POST['typeRemarque'], $dateRemarque, $_POST['remarqueRemarque'], $_POST['animalId'], $_POST['personneRemarque']);

                $SAremarque->ajouter($remarque);
                
                $_GET['id'] = $_POST['animalId'];
                $this->afficherAnimal();
            }
        }
        private function supprimerRemarque(){
            if(true){
                if(isset($_GET['idRemarque'])){
                    $SAremarque = new SAremarque();
                    $SAremarque->supprimer($_GET['idRemarque']);
                }   
                if(isset($_GET['idAnimal'])){
                    $_GET['id'] = $_GET['idAnimal'];
                    $this->afficherAnimal();
                }
            }
        }
        
        private function ajouterHistorique(){
            if(true){
                $_POST = $this->videToNull($_POST);
                $dateHistorique = DateConverter::DateIHMToBD($_POST['dateHistorique']);
                
                $SAhistorique = new SAhistorique();
                $historique = new Historique($dateHistorique, $_POST['commentaireHistorique'], $_POST['causeHistorique'], $_POST['personneHistorique'], $_POST['animalId'], $_POST['npaHistorique']);
                $SAhistorique->ajouter($historique);
                
                $_GET['id'] = $_POST['animalId'];
                $this->afficherAnimal();
            }
        }
        private function supprimerHistorique(){
            if(true){
                if(isset($_GET['dateHistorique']) && isset($_GET['idAnimal'])){
                    $SAhistorique = new SAhistorique();
                    $SAhistorique->supprimer($_GET['dateHistorique'], $_GET['idAnimal']);
                
                    $_GET['id'] = $_GET['idAnimal'];
                    $this->afficherAnimal();
                }
            }
        }
        
        
// Fonctions Plainte 
     
        // Affichage de la page d'accueil de la gestion des plaintes.
        private function afficherAccueilPlainte(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Plaintes Lecture'))){
                // if-else pour le breadcrumb
           if ($_SESSION['langue'] == 'fr') {
                $breadcrumbs = array ('<a href="index.php">Accueil </a>',
                    '<p> › Plaintes</p>');
                $this->smarty->assign('titrePage', 'ACA - Plaintes');
           } else { 
               $breadcrumbs = array ('<a href="index.php">Startseite </a>',
                   '<p> › Klagen</p>');
               $this->smarty->assign('titrePage', 'ACA - Klagen');
                }
                $this->smarty->assign('breadcrumbs',$breadcrumbs);
                $this->smarty->assign('page', 'plainte.tpl'); 
                $this->getLangue();             
                $this->getUser();
                $this->smarty->display('index.tpl');     
            }else{
                $this->afficherAccueil();
            }
        }
        // Affichage du formulaire pour ajouter un nouvel animal.
        private function afficherAjouterPlainte(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Plaintes Ecriture'))){
                  // if-else pour le breadcrumb
           if ($_SESSION['langue'] == 'fr') {
                $breadcrumbs = array('<a href="index.php">Accueil </a>',
                    '<a href="index.php?action=afficherAccueilPlainte"> › Plaintes </a>',
                    '<p> › Nouvelle plainte</p>');
                $this->smarty->assign('titrePage', 'ACA - Nouvelle plainte');
           } else { 
               $breadcrumbs = array('<a href="index.php">Startseite </a>',
                   '<a href="index.php?action=afficherAccueilPlainte"> › Klagen </a>',
                   '<p> › Neue Klage</p>');
               $this->smarty->assign('titrePage', 'ACA - Neue Klage');
                }
                $this->smarty->assign('breadcrumbs',$breadcrumbs);
                $this->smarty->assign('page', 'plainteAjouter.tpl'); 
                $this->getLangue();             
            $this->getUser();
                $this->smarty->display('index.tpl');    
            }else{
                $this->afficherAccueil();
            }
        }
        
        // Affichage du formulaire pour modifier un animal.
        private function afficherModifierPlainte($plainteAModifier){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Plaintes Ecriture'))){
                //$SAplainte = new SAplainte();
                //$plainte = $SAplainte->lister(new Plainte($GET['id'],'','','','','','','','','','',''));
                //$this->smarty->assign('plainte',$plainte[0]);
                $this->smarty->display('plainteAjouter.tpl');
                $this->getLangue();             
            $this->getUser();
                $this->smarty->display('index.tpl'); 
            }else{
                $this->afficherAccueil();
            }
        }
        
        // Affichage des résultats d'une recherche d'animal
        private function afficherRechercherPlainte(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Plaintes Lecture'))){
                   // if-else pour le breadcrumb
           if ($_SESSION['langue'] == 'fr') {
                $breadcrumbs = array('<a href="index.php">Accueil </a>',
                    '<a href="index.php?action=afficherAccueilPlainte"> › Plaintes </a>',
                    '<p> › Rechercher une plainte </p>');
                $this->smarty->assign('titrePage', 'ACA - Rechercher une plainte');
           } else { 
               $breadcrumbs = array('<a href="index.php">Startseite </a>',
                   '<a href="index.php?action=afficherAccueilPlainte"> › Klagen </a>',
                   '<p> › Klage suchen</p>');
               $this->smarty->assign('titrePage', 'ACA - Klage suchen');
                }
                $this->smarty->assign('breadcrumbs',$breadcrumbs);
                $this->smarty->assign('page', 'plainteRechercher.tpl');
                $this->getLangue();             
            $this->getUser();
                $this->smarty->display('index.tpl'); 
            }else{
                $this->afficherAccueil();
            }
        }
// Fonctions Contrat 
     
        // Affichage de la page d'accueil de la gestion des contrats
        private function afficherAccueilContrat(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Contrat Lecture'))){
                // if-else pour le breadcrumb
           if ($_SESSION['langue'] == 'fr') {
                $breadcrumbs = array('<a href="index.php">Accueil </a>',
                    '<p> › Contrats</p>');
                $this->smarty->assign('titrePage', 'ACA - Contrats');
           } else { 
               $breadcrumbs = array('<a href="index.php">Startseite </a>',
                   '<p> › Verträge</p>');
               $this->smarty->assign('titrePage', 'ACA - Verträge');
                }
                $this->smarty->assign('breadcrumbs',$breadcrumbs);
                $this->smarty->assign('page', 'contrat.tpl'); 
                $this->getLangue();             
            $this->getUser();
                $this->smarty->display('index.tpl');     
            }else{
                $this->afficherAccueil();
            }
        }
        // Affichage du formulaire pour ajouter un contrat
        private function afficherAjouterContrat(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Contrat Ecriture'))){
                   // if-else pour le breadcrumb
           if ($_SESSION['langue'] == 'fr') {
                $breadcrumbs = array('<a href="index.php">Accueil </a>',
                    '<a href="index.php?action=afficherAccueilContrat"> › Contrats </a>',
                    '<p> › Nouveau Contrat </p>');
                $this->smarty->assign('titrePage', 'ACA - Nouveau Contrat');
           } else { 
               $breadcrumbs = array('<a href="index.php">Startseite </a>',
                   '<a href="index.php?action=afficherAccueilContrat"> › Verträge </a>',
                   '<p> › Neuer Vertrag </p>');
               $this->smarty->assign('titrePage', 'ACA - Neuer Vertrag');
                }
                $this->smarty->assign('breadcrumbs',$breadcrumbs);
                $this->smarty->assign('page', 'contratAjouter.tpl'); 
                $this->getLangue();             
            $this->getUser();
                $this->smarty->display('index.tpl');    
            }else{
                $this->afficherAccueil();
            }
        }
        
        // Affichage du formulaire pour modifier un contrat
        private function afficherModifierContrat($contratAModifier){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Contrat Ecriture'))){
                //$SAcontrat = new SAcontrat();
                //$contrat = $SAcontrat->lister(new Contrat($GET['id'],'','','','','','','','','','',''));
                //$this->smarty->assign('contrat',$contrat[0]);
                $this->smarty->display('contratAjouter.tpl');
                $this->getLangue();             
            $this->getUser();
                $this->smarty->display('index.tpl'); 
            }else{
                $this->afficherAccueil();
            }
        }
        
        // Affichage des résultats d'une recherche d'un contrat
        private function afficherRechercherContrat(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Contrat Lecture'))){
                   // if-else pour le breadcrumb
           if ($_SESSION['langue'] == 'fr') {
                $breadcrumbs = array('<a href="index.php">Accueil </a>',
                    '<a href="index.php?action=afficherAccueilContrat"> › Contrats </a>',
                    '<p> › Rechercher un contrat </p>');
                $this->smarty->assign('titrePage', 'ACA - Rechercher un contrat');
           } else { 
               $breadcrumbs = array('<a href="index.php">Startseite </a>',
                   '<a href="index.php?action=afficherAccueilContrat"> › Verträge </a>',
                   '<p> › Vertrag suchen</p>');
               $this->smarty->assign('titrePage', 'ACA - Vertrag suchen');
                }
                $this->smarty->assign('breadcrumbs',$breadcrumbs);
                $this->smarty->assign('page', 'contratRechercher.tpl');
                $this->getLangue();             
            $this->getUser();
                $this->smarty->display('index.tpl'); 
            }else{
                $this->afficherAccueil();
            }
        }
// Fonctions Versement 
     
        // Affichage de la page d'accueil de la gestion des versements
        private function afficherAccueilVersement(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Versements Lecture'))){
               // if-else pour le breadcrumb
               if ($_SESSION['langue'] == 'fr') {
                    $breadcrumbs = array('<a href="index.php">Accueil </a>',
                        '<p> › Versements</p>');
                    $this->smarty->assign('titrePage', 'ACA - Versements');
               } else { 
                   $breadcrumbs = array('<a href="index.php">Startseite </a>',
                       '<p> › Zahlungen</p>');
                   $this->smarty->assign('titrePage', 'ACA - Zahlungen');
               }
               $this->smarty->assign('breadcrumbs',$breadcrumbs);
               $this->smarty->assign('page', 'versement.tpl'); 
               $this->getLangue();             
               $this->getUser();
               $this->smarty->display('index.tpl'); 
            }else{
                $this->afficherAccueil();
            }
        }
        
        // Affichage du formulaire pour ajouter un versement
        private function afficherAjouterVersement() {
        if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Versements Ecriture'))){
            if ($_SESSION['langue'] == 'fr') {
                $breadcrumbs = array('<a href="index.php">Accueil </a>',
                    '<a href="index.php?action=afficherAccueilVersement"> › Versements </a>',
                    '<p> › Nouvelle versement </p>');
                $this->smarty->assign('titrePage', 'ACA - Nouvelle versement');
            } else {
                $breadcrumbs = array('<a href="index.php">Startseite </a>',
                    '<a href="index.php?action=afficherAccueilVersement"> › Zahlungen </a>',
                    '<p> › Neue Zahlung </p>');
                $this->smarty->assign('titrePage', 'ACA - Neue Zahlung');
            }
            $this->smarty->assign('breadcrumbs', $breadcrumbs);
            $this->smarty->assign('page', 'versementAjouter2.tpl');
            $this->getLangue();
            $this->getUser();
            $this->smarty->display('index.tpl');
        }else{
                $this->afficherAccueil();
        }
    }
        
        // Affichage du formulaire pour modifier un versement
        private function afficherModifierVersement($versementAModifier){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Versements Ecriture'))){
                // A définir
            }else{
                $this->afficherAccueil();
            }
        }
        
        // Affichage des résultats d'une recherche d'un versement
        private function afficherRechercherVersement(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Versements Lecture'))){
                   // if-else pour le breadcrumb
           if ($_SESSION['langue'] == 'fr') {
                $breadcrumbs = array('<a href="index.php">Accueil </a>',
                    '<a href="index.php?action=afficherAccueilVersement"> › Versements </a>',
                    '<p> › Rechercher une versement </p>');
                $this->smarty->assign('titrePage', 'ACA - Rechercher une versement');
           } else { 
               $breadcrumbs = array('<a href="index.php">Startseite </a>',
                   '<a href="index.php?action=afficherAccueilVersement"> › Zahlungen </a>',
                   '<p> › Zahlung suchen</p>');
               $this->smarty->assign('titrePage', 'ACA - Zahlung suchen');
                }
                $this->smarty->assign('breadcrumbs',$breadcrumbs);
                $this->smarty->assign('page', 'versementRechercher.tpl');
                $this->getLangue();             
            $this->getUser();
                $this->smarty->display('index.tpl'); 
            }else{
                $this->afficherAccueil();
            }
        }
// Mailing

         // Affichage de la page de Mailing.
        private function afficherAccueilMailing(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Mailing Lecture'))){
                // if-else pour le breadcrumb
           if ($_SESSION['langue'] == 'fr') {
                $breadcrumbs = array('<a href="index.php">Accueil </a>',
                    '<p> › Mailing</p>');
                $this->smarty->assign('titrePage', 'ACA - Mailing');
           } else { 
               $breadcrumbs = array('<a href="index.php">Startseite </a>',
                   '<p> › Mailing</p>');
               $this->smarty->assign('titrePage', 'ACA - Mailing');
                }
                $this->smarty->assign('breadcrumbs',$breadcrumbs);
                $this->smarty->assign('page', 'mailing.tpl'); 
                $this->getLangue();             
            $this->getUser();
                $this->smarty->display('index.tpl');     
            }else{
                $this->afficherAccueil();
            }
        }
        
        private function exporterMailing (){
             if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Mailing Lecture'))){
                // if-else pour le breadcrumb
           if ($_SESSION['langue'] == 'fr') {
                $breadcrumbs = array('<a href="index.php">Accueil </a>',
                    '<p> › Mailing</p>');
                $this->smarty->assign('titrePage', 'ACA - Mailing');
           } else { 
               $breadcrumbs = array('<a href="index.php">Startseite </a>',
                   '<p> › Mailing</p>');
               $this->smarty->assign('titrePage', 'ACA - Mailing');
                }
                $SFadresse = new SFadresse();
                $SFadresse->exporterCSVAdressesSelonRole($_REQUEST["listeDestinataire"]);
                $this->smarty->assign('breadcrumbs',$breadcrumbs);
                $this->smarty->assign('page', 'mailing.tpl'); 
                $this->getLangue();             
                $this->getUser();
                $this->smarty->display('index.tpl');     
            }else{
                $this->afficherAccueil();
            }
            
        }
        
// Compte utilisateur
        private function afficherAccueilCompte(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Administration Lecture'))){
                // if-else pour le breadcrumb
           if ($_SESSION['langue'] == 'fr') {
                $breadcrumbs = array('<a href="index.php">Accueil </a>',
                    '<p> › Administration</p>');
                $this->smarty->assign('titrePage', 'ACA - Administration');
           } else { 
               $breadcrumbs = array('<a href="index.php">Startseite </a>',
                   '<p> › Administration</p>');
               $this->smarty->assign('titrePage', 'ACA - Administration');
                }
                $this->smarty->assign('breadcrumbs',$breadcrumbs);
                $this->smarty->assign('page', 'compte.tpl'); 
                $this->getLangue();             
            $this->getUser();
                $this->smarty->display('index.tpl');     
            }else{
                $this->afficherAccueil();
            }
        }
        
        private function afficherAjouterCompte() {
        if (($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Administration Ecriture'))) {
            $SCgroupe = new SCgroupe();
            $groupes = $SCgroupe->lister(new Groupe(''));
            $this->smarty->assign('groupes', $groupes);
            if ($_SESSION['langue'] == 'fr') {
                $breadcrumbs = array('<a href="index.php">Accueil </a>',
                    '<a href="index.php?action=afficherAccueilCompte"> › Administration </a>',
                    '<p> › Nouveau compte d\'utilisateur</p>');
                $this->smarty->assign('titrePage', 'ACA - Nouveau compte');
            } else {
                $breadcrumbs = array('<a href="index.php">Startseite </a>',
                    '<a href="index.php?action=afficherAccueilCompte"> › Administration </a>',
                    '<p> › Neues Benutzerkonto</p>');
                $this->smarty->assign('titrePage', 'ACA - Neues Benutzerkonto');
            }
            $this->smarty->assign('breadcrumbs', $breadcrumbs);
            $this->smarty->assign('page', 'compteAjouter.tpl');
            $this->getLangue();
            $this->getUser();
            $this->smarty->display('index.tpl');
        }else{
                $this->afficherAccueil();
            }
    }
        
       private function afficherModifierCompte(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Administration Ecriture'))){
                $SAcompte = new SAcompte();
                $compte = $SAcompte->lister(new Compte($_GET['identifiant'], null)) ;
                $this->smarty->assign('compte', $compte[0]);
                $SCgroupe = new SCgroupe();
                $groupes = $SCgroupe->lister(new Groupe(''));
                $this->smarty->assign('groupes', $groupes);
                if ($_SESSION['langue'] == 'fr') {
                $breadcrumbs = array('<a href="index.php">Accueil </a>',
                    '<a href="index.php?action=afficherAccueilCompte"> › Administration </a>',
                    '<a href="index.php?action=afficherRechercherCompte"> › Rechercher un compte </a>',
                    '<p> › Modifier compte </p>');
                $this->smarty->assign('titrePage', 'ACA - Modifier compte');
            } else {
                $breadcrumbs = array('<a href="index.php">Startseite </a>',
                    '<a href="index.php?action=afficherAccueilCompte"> › Administration </a>',
                    '<a href="index.php?action=afficherRechercherCompte"> › Benutzerkonto suchen </a>',
                    '<p> › Benutzerkonto ändern</p>');
                $this->smarty->assign('titrePage', 'ACA - Benutzerkonto ändern');
            }
            $this->smarty->assign('breadcrumbs', $breadcrumbs);
                $this->smarty->assign('page', 'compteAjouter.tpl'); 
                $this->getLangue();             
            $this->getUser();
                $this->smarty->display('index.tpl');  
            }else{
                $this->afficherAccueil();
            }
        }
        
         private function afficherRechercherCompte() {
        if (($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Administration Lecture'))) {
            $SCgroupe = new SCgroupe();
            $groupes = $SCgroupe->lister(new Groupe(''));
            $this->smarty->assign('groupes', $groupes);
            if ($_SESSION['langue'] == 'fr') {
                $breadcrumbs = array('<a href="index.php">Accueil </a>',
                    '<a href="index.php?action=afficherAccueilCompte"> › Administration </a>',
                    '<p> › Rechercher un compte </p>');
                $this->smarty->assign('titrePage', 'ACA - Rechercher un compte');
            } else {
                $breadcrumbs = array('<a href="index.php">Startseite </a>',
                    '<a href="index.php?action=afficherAccueilCompte"> › Administration </a>',
                    '<p> › Benutzerkonto suchen</p>');
                $this->smarty->assign('titrePage', 'ACA - Benutzerkonto suchen');
            }
            $this->smarty->assign('breadcrumbs', $breadcrumbs);
            $this->smarty->assign('page', 'compteRechercher.tpl');
            $this->getLangue();
            $this->getUser();
            $this->smarty->display('index.tpl');
        }else{
                $this->afficherAccueil();
        }
    }
/***************************************************************************************************************
            
Fonctions d'actions

***************************************************************************************************************/

        private function authentification(){
            if($this->auth->getAuth()){
                $this->afficherAccueil();
            }
            else{
                $this->smarty->assign('loginMessage', "Mauvais login !");
                $this->smarty->assign('langue', 'fr');
                $this->smarty->display('connexion.tpl');
            }
        }
        
        private function logout(){
            $this->auth->logout();
        }
        
        // Ajout d'un nouveau compte utilisateur.
    private function ajouterCompte() {
        if (($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Administration Ecriture'))) {
            $unCompteMemorise = null;
            $SAcompte = new SAcompte();
            $unCompteMemorise = $SAcompte->ajouter(new Compte($_POST['identifiant'], $_POST['motPasse']), new Groupe($_POST['groupe']));

            if ($unCompteMemorise != null) {
                $SCgroupe = new SCgroupe();
                $groupes = $SCgroupe->lister(new Groupe(''));
                $this->smarty->assign('groupes', $groupes);
                if ($_SESSION['langue'] == 'fr') {
                    $breadcrumbs = array('<a href="index.php">Accueil </a>',
                        '<a href="index.php?action=afficherAccueilCompte"> › Administration </a>',
                        '<p> › Nouveau compte d\'utilisateur</p>');
                    $this->smarty->assign('titrePage', 'ACA - Nouveau compte');
                    $confirmation = "Le compte a bien été enregistré.";
                    $this->smarty->assign('confirmation', $confirmation);
                } else {
                    $breadcrumbs = array('<a href="index.php">Startseite </a>',
                        '<a href="index.php?action=afficherAccueilCompte"> › Administration </a>',
                        '<p> › Neues Benutzerkonto</p>');
                    $this->smarty->assign('titrePage', 'ACA - Neues Benutzerkonto');
                    $confirmation = "Das Konto wurde gespeichert.";
                    $this->smarty->assign('confirmation', $confirmation);
                }
                $this->smarty->assign('breadcrumbs', $breadcrumbs);
                $this->smarty->assign('page', 'compteAjouter.tpl');
                $this->getLangue();
                $this->getUser();
                $this->smarty->display('index.tpl');
            } else {
                if ($_SESSION['langue'] == 'fr') {
                    $confirmation = "Le compte n'a pas été enregistré.";
                    $this->smarty->assign('confirmation', $confirmation);
                } else {
                    $confirmation = "Das Konto wurde nicht gespeichert.";
                    $this->smarty->assign('confirmation', $confirmation);
                }    
            }
        }else{
                $this->afficherAccueil();
        }
    }

    // Modifier compte utilisateur.
        private function modifierCompte() {
        if (($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Administration Ecriture'))) {
            $SCgroupe = new SCgroupe();
            $groupes = $SCgroupe->lister(new Groupe(''));
            $SAcompte = new SAcompte();
            $compte = $SAcompte->modifier(new Compte($_POST['identifiant'], $_POST['motPasse']), new Groupe($_POST['groupe']));
            $this->smarty->assign('compte', $compte);
            $this->smarty->assign('groupes', $groupes);
            if ($_SESSION['langue'] == 'fr') {
                $breadcrumbs = array('<a href="index.php">Accueil </a>',
                    '<a href="index.php?action=afficherAccueilCompte"> › Administration </a>',
                    '<a href="index.php?action=afficherRechercherCompte"> › Rechercher un compte </a>',
                    '<p> › Compte modifié </p>');
                $this->smarty->assign('titrePage', 'ACA - Modifier compte');
            } else {
                $breadcrumbs = array('<a href="index.php">Startseite </a>',
                    '<a href="index.php?action=afficherAccueilCompte"> › Administration </a>',
                    '<a href="index.php?action=afficherRechercherCompte"> › Benutzerkonto suchen </a>',
                    '<p> › Benutzerkonto geändert</p>');
                $this->smarty->assign('titrePage', 'ACA - Benutzerkonto ändern');
            }
            $this->smarty->assign('breadcrumbs', $breadcrumbs);
            $this->smarty->assign('page', 'compteAjouter.tpl');
            $this->getLangue();
            $this->getUser();
            $this->smarty->display('index.tpl');
        }else{
                $this->afficherAccueil();
        }
    }

    // Rechercher compte utilisateur.
        private function rechercherCompte(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Administration Lecture'))){
                $identifiant = null;
                if($_POST['identifiant'] !=''){
                    $identifiant = $_POST['identifiant'];
                }
                $typeGroupe = null;
                if($_POST['groupe'] != ''){
                    $typeGroupe = $_POST['groupe'];
                }
                
                $SCgroupe = new SCgroupe();
                $groupes = $SCgroupe->lister(new Groupe(''));
                $this->smarty->assign('groupes', $groupes);
                $SAcompte = new SAcompte();
                $listeComptes = $SAcompte->listerCompteToGroupe(new CompteToGroupe($identifiant,$typeGroupe));
                $this->smarty->assign('listeComptes', $listeComptes); 
                if ($_SESSION['langue'] == 'fr') {
                $breadcrumbs = array('<a href="index.php">Accueil </a>',
                    '<a href="index.php?action=afficherAccueilCompte"> › Administration </a>',
                    '<p> › Rechercher un compte</p>');
                $this->smarty->assign('titrePage', 'ACA - Rechercher un compte');
            } else {
                $breadcrumbs = array('<a href="index.php">Startseite </a>',
                    '<a href="index.php?action=afficherAccueilCompte"> › Administration </a>',
                    '<p> › Benutzerkonto suchen</p>');
                $this->smarty->assign('titrePage', 'ACA - Benutzerkonto suchen');
            }
            $this->smarty->assign('breadcrumbs', $breadcrumbs);
                $this->smarty->assign('page', 'compteRechercher.tpl'); 
                $this->getLangue();             
            $this->getUser();
                $this->smarty->display('index.tpl');
    
            }else{
                $this->afficherAccueil();
            }
        }   
        
        
        
// Personne
// 
        // affichage de la page d'accueil de gestion des personnes        
        private function accueilPersonne(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Personnes Lecture'))){

            }else{
                $this->afficherAccueil();
            }
        }   
        
        // Ajout d'une nouvelle personne
        private function ajouterPersonne(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Personnes Ecriture'))){
                $SApersonne = new SApersonne();
                $SAcontrat = new SAcontrat();
                $SArapport = new SArapport();
                $SAhistorique = new SAhistorique();
                $personne = $SApersonne->ajouter(new Personne('',$_POST['titre'],$_POST['prenom'],$_POST['nom'],$_POST['telephone'],$_POST['telephonesecond'], $_POST['email'],$_POST['attestationFiscale'],$_POST['inscriptionOnline'],$_POST['remarque']), 
                                                 new Adresse($_POST['adresseLigne1'], $_POST['adresseLigne2'], $_POST['adresseLigne3'], '', $_POST['npa'] ),
                                                 'Principal',
                                                 new Localite($_POST['npa'], $_POST['localite'], $_POST['region'], $_POST['pays']),
                                                 new Region($_POST['region'], $_POST['pays']),
                                                 $_POST['pays'],
                                                 'test');
                $contrats = $SAcontrat->lister(new Contrat(null, null, null, null, $personne[0]->getId()));
                $rapports = $SArapport->lister(new Rapport(null, null, null, $personne[0]->getId(), null));
                $historique = $SAhistorique->lister(new Historique(null, null, null, $personne[0]->getId(), null, null));
                $this->smarty->assign('historiques', $historique);
                $this->smarty->assign('rapports', $rapports);
                $this->smarty->assign('contrats', $contrats);
                $this->smarty->assign('adresses', array($personne[1]));
                $this->smarty->assign('localites', array($personne[2]));
                $this->smarty->assign('personne', $personne[0]);
                   // if-else pour le breadcrumb
           if ($_SESSION['langue'] == 'fr') {
                $breadcrumbs = array('<a href="index.php">Accueil </a>',
                    '<a href="index.php?action=afficherAccueilPersonne"> › Personnes </a>',
                    '<a href="index.php?action=afficherAjouterPersonne"> › Ajouter une personne </a>',
                    '<p> › Personne </p>');
                $this->smarty->assign('titrePage', 'ACA - Personne');
           } else { 
               $breadcrumbs = array('<a href="index.php">Startseite </a>',
                   '<a href="index.php?action=afficherAccueilPersonne"> › Personen </a>',
                   '<a href="index.php?action=afficherAjouterPersonne"> › Neue Person </a>',
                   '<p> › Person </p>');
               $this->smarty->assign('titrePage', 'ACA - Person');
                }
                $this->smarty->assign('breadcrumbs',$breadcrumbs);
                $this->smarty->assign('page', 'personneAfficher.tpl'); 
                $this->getLangue();             
            $this->getUser();
                $this->smarty->display('index.tpl');   
            }else{
                $this->afficherAccueil();
            }
            
        }      
        // Modification d'une personne        
    private function modifierPersonne() {
        if (($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Personnes Ecriture'))) {
            $SApersonne = new SApersonne();
            $SAcontrat = new SAcontrat();
            $SArapport = new SArapport();
            $SAhistorique = new SAhistorique();
            $personne = $SApersonne->modifier(new Personne($_POST['id'], $_POST['titre'], $_POST['prenom'], $_POST['nom'], $_POST['telephone'], $_POST['telephonesecond'],
                            $_POST['email'], $_POST['attestationFiscale'], $_POST['inscriptionOnline'], $_POST['remarque']));
            $adresses = $SApersonne->listerAdresse($personne);
            $contrats = $SAcontrat->lister(new Contrat(null, null, null, null, $personne->getId()));
            $rapports = $SArapport->lister(new Rapport(null, null, null, $personne->getId(), null));
            $historique = $SAhistorique->lister(new Historique(null, null, null, $personne->getId(), null, null));
            $this->smarty->assign('historiques', $historique);
            $this->smarty->assign('rapports', $rapports);
            $this->smarty->assign('contrats', $contrats);
            $this->smarty->assign('adresses', $adresses[0][0]);
            $this->smarty->assign('localites', $adresses[1][0]);
            $this->smarty->assign('personne', $personne);
            // if-else pour le breadcrumb
            if ($_SESSION['langue'] == 'fr') {
                $breadcrumbs = array('<a href="index.php">Accueil </a>',
                    '<a href="index.php?action=afficherAccueilPersonne"> › Personnes </a>',
                    '<a href="index.php?action=afficherRechercherPersonne"> › Rechercher une personne </a>',
                    '<p> › Personne </p>');
                $this->smarty->assign('titrePage', 'ACA - Personne');
            } else {
                $breadcrumbs = array('<a href="index.php">Startseite </a>',
                    '<a href="index.php?action=afficherAccueilPersonne"> › Personen </a>',
                    '<a href="index.php?action=afficherRechercherPersonne"> › Person suchen </a>',
                    '<p> › Person</p>');
                $this->smarty->assign('titrePage', 'ACA - Person');
            }
            $this->smarty->assign('breadcrumbs', $breadcrumbs);
            $this->smarty->assign('page', 'personneAfficher.tpl');
            $this->getLangue();
            $this->getUser();
            $this->smarty->display('index.tpl');
        }else{
                $this->afficherAccueil();
        }
    }

    // affichage d'une personne        
        private function afficherPersonne(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Personnes Lecture'))){
                $SApersonne = new SApersonne();
                $SAhistorique = new SAhistorique();
                $SAcontrat = new SAcontrat();
                $SArapport = new SArapport();
                $personne = $SApersonne->lister(new Personne($_GET['id'], '', '', '', '', '', '', '', '', ''));
                $adresses = $SApersonne->listerAdresse(new Personne($_GET['id'], '', '', '', '', '', '', '', '', ''));
                $historique = $SAhistorique->lister(new Historique(null, null, null, $_GET['id'], null, null));
                $contrats = $SAcontrat->lister(new Contrat(null, null, null, null, $_GET['id']));
                $rapports = $SArapport->lister(new Rapport(null, null, null, $_GET['id'], null));
                $this->smarty->assign('rapports', $rapports);
                $this->smarty->assign('historiques', $historique);
                $this->smarty->assign('contrats', $contrats);
                $this->smarty->assign('adresses', $adresses[0][0]);
                $this->smarty->assign('localites', $adresses[1][0]);
                $this->smarty->assign('personne', $personne[0]);
                   // if-else pour le breadcrumb
           if ($_SESSION['langue'] == 'fr') {
                $breadcrumbs = array('<a href="index.php">Accueil </a>',
                    '<a href="index.php?action=afficherAccueilPersonne"> › Personnes </a>',
                    '<a href="index.php?action=afficherRechercherPersonne"> › Rechercher une personne </a>',
                    '<p> › Personne </p>');
                $this->smarty->assign('titrePage', 'ACA - Personne');
           } else { 
               $breadcrumbs = array('<a href="index.php">Startseite </a>',
                   '<a href="index.php?action=afficherAccueilPersonne"> › Personen </a>',
                   '<a href="index.php?action=afficherRechercherPersonne"> › Person suchen </a>',
                   '<p> › Person</p>');
               $this->smarty->assign('titrePage', 'ACA - Person');
                }
                $this->smarty->assign('breadcrumbs',$breadcrumbs);
                $this->smarty->assign('page', 'personneAfficher.tpl');
                $this->getLangue();             
            $this->getUser();
                $this->smarty->display('index.tpl');   
            }else{
                $this->afficherAccueil();
            }
        }   
        
        // Affichage des résultats d'une recherche de personnes       
        private function rechercherPersonne(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Personnes Lecture'))){
                $SAcompte = new SAcompte();
                $groupe = $SAcompte->listerCompteToGroupe(new CompteToGroupe($this->auth->getUsername(), NULL));
                $SApersonne = new SApersonne();
                $listePersonnes = $SApersonne->lister(new Personne('', $_POST['titre'], $_POST['prenom'], $_POST['nom'], '', '', '', '', '', ''));
                $this->smarty->assign('groupe', $groupe[0]->getGroupe_nom());
                $this->smarty->assign('listePersonnes', $listePersonnes);
                       // if-else pour le breadcrumb
           if ($_SESSION['langue'] == 'fr') {
                $breadcrumbs = array('<a href="index.php">Accueil </a>',
                    '<a href="index.php?action=afficherAccueilPersonne"> › Personnes </a>',
                    '<p> › Rechercher une personne </p>');
                $this->smarty->assign('titrePage', 'ACA - Rechercher une personne');
           } else { 
               $breadcrumbs = array('<a href="index.php">Startseite </a>',
                   '<a href="index.php?action=afficherAccueilPersonne"> › Personen </a>',
                   '<p> › Person suchen</p>');
               $this->smarty->assign('titrePage', 'ACA - Person suchen');
                }
                $this->smarty->assign('breadcrumbs',$breadcrumbs);
                $this->smarty->assign('page', 'personneRechercher.tpl'); 
                $this->getLangue();             
            $this->getUser();
                $this->smarty->display('index.tpl');   
            }else{
                $this->afficherAccueil();
            }
        }   
        
        // suppression d'une personne       
        private function supprimerPersonne(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Personnes Ecriture'))){
                $SApersonne = new SApersonne();
                $personne = $SApersonne->supprimerPersonne(new Personne($_GET['id'], '', '', '', '', '', '', '', '', ''));
                $this->smarty->assign('page', 'personneRechercher.tpl'); 
                $this->getLangue();             
            $this->getUser();
                $this->smarty->display('index.tpl');   
            }else{
                $this->afficherAccueil();
            }
        }   
// Animal 
        // affichage de la page d'accueil de gestion des animaux      
        private function accueilAnimal(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Animaux Lecture'))){
                // à compléter 
            }else{
                $this->afficherAccueil();
            }
        }   
        
        // Ajout d'une nouvelle animal
        private function ajouterAnimal(){ 
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Animaux Ecriture'))){
                if(true){
                    $_POST = $this->videToNull($_POST);

                    $SAanimal = new SAanimal();
                    $SFMedia = new SFmedia();
                    $puce = null;
                    $photo = null;

                    $dateNaissance = DateConverter::DateIHMToBD($_POST['dateNaissance']);
                    $dateDeces = DateConverter::DateIHMToBD($_POST['dateDeces']);

                    if(isset($_FILES['photoProfil']))
                        $photo = $SFMedia->uploadMedia($_POST);

                    $ani = new Animal(null,$_POST['puceNo'],$_POST['implantation'] ,$_POST['nom'],$_POST['secondNom'],$dateNaissance,
                            $dateDeces, $_POST['sexe'],$_POST['couleur'],$photo ,$_POST['longueurPoil'],$_POST['medaille'],
                            $_POST['tatouage'],$_POST['remarque'], $_POST['TypeAnimal']);

                    if($ani->isValid()){
                        $listeRaces = array();
                        $listeRaces[] = new Race($_POST['TypeRace'], $_POST['TypeAnimal']);
                        $animal = $SAanimal->ajouter($ani, $listeRaces);
                        $this->smarty->assign('animal', $animal);
                        $_GET['id'] = $ani->getId();
                        $this->afficherAnimal();
                    }
                    else{
                        $this->smarty->assign('userMessage', 'FAIL');
                        $this->afficherAjouterAnimal();
                    }
                }
            }else{
                $this->afficherAccueil();
            }
        }      
        // Modification d'une animal       
        private function modifierAnimal(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Animaux Ecriture'))){
                $animal = $SAanimal->modifier(new Animal($_POST['id'],$_POST['puceNo'],$_POST['implantation'],$_POST['nom'],$_POST['secondNom'],$_POST['dateNaissance'],
                        $_POST['dateDeces'],$_POST['sexe'],$_POST['couleur'],$_POST['photoProfil'],$_POST['longueurPoil'],$_POST['medaille'],$_POST['tatouage'],$_POST['remarque'],''));
                $this->smarty->assign('animal', $animal);
                $this->smarty->assign('page', 'animalAfficher.tpl'); 
                $this->getLangue();             
                $this->getUser();
                $this->smarty->display('index.tpl');   
            }else{
                $this->afficherAccueil();
            }
        }  
        
        // affichage d'une animal       
        private function afficherAnimal(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Animaux Lecture'))){
                if(isset($_GET['id'])){
                    $SAanimal = new SAanimal();
                    $SAhistorique = new SAhistorique();
                    $SAdeplacement = new SAdeplacement();
                    $SAremarque = new SAremarque();
                    $SAmedia = new SAmedia();

                    $SCBatiment = new SCbatiment();
                    $SCTypeCauseHistorique = new SCtypedecause();

                    // Création des objets null pour l'affichage correct dans smarty, au cas où il n'y a aucun résultat
                    $deplacements = new Deplacement(null, null, null, null, null);
                    $remarques = new Remarque(null, null, null, null, null, null);
                    $historique = new Historique(null, null, null, null, null, null);
                    $medias = new Media(null, null, null, null, null, null);


                    $animal = $SAanimal->lister(new Animal($_GET['id'], null, null, null, null, null, null, null, null, null, null, null, null, null, null));
                    $listeRacesToAnimal = $SAanimal->listerRaces($animal['0']);
                    $historique = $SAhistorique->lister(new Historique(null, null, null, null, $_GET['id'], null));
                    $deplacements = $SAdeplacement->lister(new Deplacement(null, null, $_GET['id'], null, null));
                    $remarques = $SAremarque->lister(new Remarque(null, null, null, null, $_GET['id'], null));
                    $medias = $SAmedia->lister(new Media(null, null, null, null, null, $_GET['id']));
                    $batiments = $SCBatiment->lister(null);
                    $typeCauseHistorique = $SCTypeCauseHistorique->lister(null);

                    $this->smarty->assign('animal', $animal['0']);
                    $this->smarty->assign('listeRacesToAnimal', $listeRacesToAnimal);
                    $this->smarty->assign('historique', $historique);
                    $this->smarty->assign('deplacements', $deplacements);
                    $this->smarty->assign('remarques', $remarques);
                    $this->smarty->assign('medias', $medias);
                    $this->smarty->assign('batiments', $batiments);
                    $this->smarty->assign('typeCauseHistorique', $typeCauseHistorique);
                    if ($_SESSION['langue'] == 'fr') {
                    $breadcrumbs = array('<a href="index.php">Accueil </a>',
                        '<a href="index.php?action=afficherAccueilAnimal"> › Animaux </a>',
                        '<a href="index.php?action=afficherRechercherAnimal"> › Rechercher un animal </a>',
                        '<p> › Animal </p>');
                    $this->smarty->assign('titrePage', 'ACA - Animal');
                } else {
                    $breadcrumbs = array('<a href="index.php">Startseite </a>',
                        '<a href="index.php?action=afficherAccueilAnimal"> › Tiere </a>',
                        '<a href="index.php?action=afficherRechercherAnimal"> › Tier suchen </a>',
                        '<p> › Tier </p>');
                    $this->smarty->assign('titrePage', 'ACA - Tier');
                }
                $this->smarty->assign('breadcrumbs', $breadcrumbs);
                $this->smarty->assign('page', 'animalAfficher.tpl');
                $this->getLangue();
                $this->getUser();
                $this->smarty->display('index.tpl');
            }
        }else{
                $this->afficherAccueil();
        }
    }

    // Affichage des résultats d'une recherche d'animaux      
        private function rechercherAnimal(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Animaux Lecture'))){
                $SAcompte = new SAcompte();
                $groupe = $SAcompte->listerCompteToGroupe(new CompteToGroupe($this->auth->getUsername(), NULL));
                $SCt = new SCtypederace();
                $listeTypes = $SCt->lister(null);
                               // if-else pour le breadcrumb
               if ($_SESSION['langue'] == 'fr') {
                    $breadcrumbs = array('<a href="index.php">Accueil </a>',
                        '<a href="index.php?action=afficherAccueilAnimal"> › Animaux </a>',
                        '<p> › Rechercher un animal </p>');
                    $this->smarty->assign('titrePage', 'ACA - Rechercher un animal');
               } else { 
                   $breadcrumbs = array('<a href="index.php">Startseite </a>',
                       '<a href="index.php?action=afficherAccueilAnimal"> › Tiere </a>',
                       '<p> › Tier suchen</p>');
                   $this->smarty->assign('titrePage', 'ACA - Tier suchen');
                    }
                    $this->smarty->assign('breadcrumbs',$breadcrumbs);
                $this->smarty->assign('typeAnimal', $listeTypes);

                $_POST = $this->videToNull($_POST);

                $SAanimal = new SAanimal();
                $race = new Race($_POST['TypeRace'], $_POST['TypeAnimal']);
                $ani = new Animal(null,null,null,$_POST['nom'],$_POST['secondNom'],null,null,$_POST['sexe'],$_POST['couleur'],null, null, null, null, null, $_POST['TypeAnimal']);
                $listeAnimal = $SAanimal->listerAvecRace($ani, $race);
                $this->smarty->assign('groupe', $groupe[0]->getGroupe_nom());
                $this->smarty->assign('listeAnimaux', $listeAnimal);
                $this->smarty->assign('listeCouleur', Animal::$enumCOULEUR);
                $this->smarty->assign('page', 'animalRechercher.tpl'); 
                $this->getLangue();             
                $this->getUser();
                $this->smarty->display('index.tpl');  
            }else{
                $this->afficherAccueil();
            }
        }

// Plainte
        // affichage de la page d'accueil de gestion des plaintes      
        private function accueilPlainte(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Plaintes Lecture'))){
                // à définir
            }else{
                $this->afficherAccueil();
            }
        }   
        
        // Ajout d'une nouvelle plainte
        private function ajouterPlainte(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Plaintes Ecriture'))){
                 //$SAplainte = new SAplainte();
                 //$plainte = $SAplainte->ajouter(new Plainte('',$_POST['date']));
                 $this->smarty->assign('plainte', $plainte);
                 $this->smarty->assign('page', 'plainteAfficher.tpl'); 
                 $this->getLangue();             
            $this->getUser();
                 $this->smarty->display('index.tpl');
            }else{
                $this->afficherAccueil();
            }
            
        }      
        // Modification d'une plainte       
        private function modifierPlainte(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Plaintes Ecriture'))){
                $SAplainte = new SAplainte();
                $plainte = $SAplainte->modifier(new Plainte($_POST['id']));
                $this->smarty->assign('plainte', $plainte);

                $this->smarty->assign('page', 'plainteAfficher.tpl'); 
                $this->getLangue();             
            $this->getUser();
                $this->smarty->display('index.tpl');   
            }else{
                $this->afficherAccueil();
            }
        }  
        
        // affichage d'une plainte       
        private function afficherPlainte(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Plaintes Lecture'))){
                // A changer
                $p = new Plainte(1, '2012-02-20', 'une bonne description', Plainte::$enumSTATUS['0'], 1 ,1);
                $this->smarty->assign('plainte', $p);
                $this->smarty->assign('page', 'plainteAfficher.tpl'); 
                $this->getLangue();             
            $this->getUser();
                $this->smarty->display('index.tpl');   
            }else{
                $this->afficherAccueil();
            }
        }   
        
        // Affichage des résultats d'une recherche de plaintes      
        private function rechercherPlainte(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Plaintes Lecture'))){
                $this->smarty->assign('page', 'plainteRechercher.tpl'); 
                $this->getLangue();             
            $this->getUser();
                $this->smarty->display('index.tpl');   
            }else{
                $this->afficherAccueil();
            }
        }   
// Contrat
        // affichage de la page d'accueil de gestion des contrat     
        private function accueilContrat(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Contrat Lecture'))){
                // à définir
            }else{
                $this->afficherAccueil();
            }
        }   
        
        // Ajout d'une nouveau contrat de type pension
        private function ajouterContratPension(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Contrat Ecriture'))){
                 $SAcontrat = new SAcontrat();
                 $contrat = $SAcontrat->ajouterContratPension(new Contrat(NULL, $_POST['date'], $_POST['lieu'], $_POST['animal_id'], $_POST['personne_id']), new Pension(NULL, $_POST['dateArrivee'], $_POST['dateDepart'], $_POST['montantParJour'], $_POST['fraisVeto'], NULL));
                 //$this->smarty->assign('contrat', $contrat);
                 
                 $this->smarty->assign('page', 'contratAjouter.tpl'); 
                 $this->getLangue();             
                 $this->getUser();
                 $this->smarty->display('index.tpl');
            }else{
                $this->afficherAccueil();
            }
        }      
        
        // Ajout d'une nouveau contrat de type pension
        private function ajouterContratAdoption(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Contrat Ecriture'))){
                 $SAcontrat = new SAcontrat();
                 $contrat = $SAcontrat->ajouterContratAdoptionProvisoire(new Contrat(NULL, $_POST['date'], $_POST['lieu'], $_POST['animal_id'], $_POST['personne_id']), new AdoptionProvisoire(NULL, $_POST['dateDebut'], $_POST['dateFin'], $_POST['traitementVeto'], $_POST['remuneration'], NULL));
                 //$this->smarty->assign('contrat', $contrat);
                 
                 $this->smarty->assign('page', 'contratAjouter.tpl'); 
                 $this->getLangue();             
                 $this->getUser();
                 $this->smarty->display('index.tpl');
            }else{
                $this->afficherAccueil();
            }
        }
        
        // Ajout d'une nouveau contrat de type pension
        private function ajouterContratCession(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Contrat Ecriture'))){
                 $SAcontrat = new SAcontrat();
                 $contrat = $SAcontrat->ajouterContratCessionPropriete(new Contrat(NULL, $_POST['date'], $_POST['lieu'], $_POST['animal_id'], $_POST['personne_id']), new CessionPropriete(NULL, NULL, $_POST['remarques']));
                 //$this->smarty->assign('contrat', $contrat);
                 
                 $this->smarty->assign('page', 'contratAjouter.tpl'); 
                 $this->getLangue();             
                 $this->getUser();
                 $this->smarty->display('index.tpl');
            }else{
                $this->afficherAccueil();
            }
        } 
        
        // Ajout d'une nouveau contrat de type pension
        private function ajouterContratPlacement(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Contrat Ecriture'))){
                 $SAcontrat = new SAcontrat();
                 $contrat = $SAcontrat->ajouterContratPlacement(new Contrat(NULL, $_POST['date'], $_POST['lieu'], $_POST['animal_id'], $_POST['personne_id']), new Placement(NULL, $_POST['veterinairePrive'], $_POST['dateArrivee'], $_POST['dateDepart'], $_POST['montantParJour'], $_POST['supplement'], $_POST['datePaiement'], NULL));
                 //$this->smarty->assign('contrat', $contrat);
                 
                 $this->smarty->assign('page', 'contratAjouter.tpl'); 
                 $this->getLangue();             
                 $this->getUser();
                 $this->smarty->display('index.tpl');
            }else{
                $this->afficherAccueil();
            }
        } 
        
        // Ajout d'une nouveau contrat de type pension
        private function ajouterContratRestitution(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Contrat Ecriture'))){
                 $SAcontrat = new SAcontrat();
                 $contrat = $SAcontrat->ajouterContratRestitution(new Contrat(NULL, $_POST['date'], $_POST['lieu'], $_POST['animal_id'], $_POST['personne_id']), new Restitution(NULL, $_POST['remarque'], NULL));
                 //$this->smarty->assign('contrat', $contrat);
                 
                 $this->smarty->assign('page', 'contratAjouter.tpl'); 
                 $this->getLangue();             
                 $this->getUser();
                 $this->smarty->display('index.tpl');
            }else{
                $this->afficherAccueil();
            }
        }    
        
        // Modification d'un contrat     
        private function modifierContrat(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Contrat Ecriture'))){
                $SAcontrat = new SAcontrat();
                $contrat = $SAcontrat->modifier(new Contrat($_POST['id']));
                $this->smarty->assign('contrat', $contrat);

                $this->smarty->assign('page', 'contratAfficher.tpl'); 
                $this->getLangue();             
            $this->getUser();
                $this->smarty->display('index.tpl');   
            }else{
                $this->afficherAccueil();
            }
        }  
        
        // affichage d'un contrat      
        private function afficherContrat(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Contrat Lecture'))){
                // A changer
                $c = new Contrat(1, '2012-02-20', 'Lausanne', 1 ,1);
                $this->smarty->assign('contrat', $c);
                $this->smarty->assign('page', 'contratAfficher.tpl'); 
                $this->getLangue();             
            $this->getUser();
                $this->smarty->display('index.tpl');   
            }else{
                $this->afficherAccueil();
            }
        }   
        
        // Affichage des résultats d'une recherche de contrats    
        private function rechercherContrat(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Contrat Lecture'))){
                $SAcontrat =  new SAcontrat();
                if((isset($_REQUEST)) && ($_POST['type'] != null)){
                $this->smarty->assign('type', $_POST['type']);
                $listeContrats = $SAcontrat->listerContratPension(new Contrat(NULL, NULL, $_POST['lieu'], $_POST['animal_id'], $_POST['personne_id']), $_POST['type']);
                }else{
                    $listeContrats = $SAcontrat->lister(new Contrat(NULL, NULL, $_POST['lieu'], $_POST['animal_id'], $_POST['personne_id']));
                }
                $this->smarty->assign('listeContrats', $listeContrats);
                if ($_SESSION['langue'] == 'fr') {
                $breadcrumbs = array('<a href="index.php">Accueil </a>',
                    '<a href="index.php?action=afficherAccueilContrat"> › Contrats </a>',
                    '<p> › Rechercher un contrat </p>');
                $this->smarty->assign('titrePage', 'ACA - Rechercher un contrat');
           } else { 
               $breadcrumbs = array('<a href="index.php">Startseite </a>',
                   '<a href="index.php?action=afficherAccueilContrat"> › Verträge </a>',
                   '<p> › Vertrag suchen</p>');
               $this->smarty->assign('titrePage', 'ACA - Vertrag suchen');
                }
                $this->smarty->assign('breadcrumbs',$breadcrumbs);
                $this->smarty->assign('page', 'contratRechercher.tpl'); 
                $this->getLangue();             
                $this->getUser();
                $this->smarty->display('index.tpl');   
            }else{
                $this->afficherAccueil();
            }
        }   
// Versement
        // affichage de la page d'accueil de gestion des versements     
        private function accueilVersement(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Versements Lecture'))){
                // à définir
            }else{
                $this->afficherAccueil();
            }
        }   
        
        // Ajout d'une nouveau versement
        private function ajouterVersement(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Versements Ecriture'))){
                 //$SAcontrat = new SAcontrat();
                 //$contrat = $SAcontrat->ajouter(new Contrat('',$_POST['']));
                 $this->smarty->assign('versement', $versement);
                 $this->smarty->assign('page', 'versementAfficher.tpl'); 
                 $this->getLangue();             
                 $this->getUser();
                 $this->smarty->display('index.tpl');
            }else{
                $this->afficherAccueil();
            }
        }      
        // Modification d'un versement     
        private function modifierVersement(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Versements Ecriture'))){
                $SAversement = new SAversement();
                $versement = $SAversement->modifier(new Versement($_POST['id']));
                $this->smarty->assign('versement', $versement);

                $this->smarty->assign('page', 'versementAfficher.tpl'); 
                $this->getLangue();             
            $this->getUser();
                $this->smarty->display('index.tpl');   
            }else{
                $this->afficherAccueil();
            }
        }  
        
        // affichage d'un versement     
        private function afficherVersement(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Versements Lecture'))){
                // A changer
                $v = new Versement('', 10-2345-1, '2012-02-03', 380, Versement::$enumVERSEMENT[0], 'Une bonne remarque', 1, 1, 1);
                $this->smarty->assign('versement', $v);
                $this->smarty->assign('page', 'versementAfficher.tpl'); 
                $this->getLangue();             
            $this->getUser();
                $this->smarty->display('index.tpl');   
            }else{
                $this->afficherAccueil();
            }
        }   
        
        // Affichage des résultats d'une recherche de contrats    
        private function rechercherVersement(){
            if(($this->auth->checkAuth()) && ($this->SFcompte->verifierPermission($this->auth->getUsername(), 'Versements Lecture'))){
                $this->smarty->assign('page', 'versementRechercher.tpl'); 
                $this->getLangue();             
            $this->getUser();
                $this->smarty->display('index.tpl');   
            }else{
                $this->afficherAccueil();
            }
        }   
        
        
        
        private function videToNull($objet){
            foreach ($objet as $nomvar => $valeurvar) {
                if ($valeurvar == '' || $valeurvar == 'null') {
                    $objet[$nomvar] = null;
                }
            }
            return $objet;
        }
}
?>
